#include "model.h"

t_database* core;

int main(int argc, char *argv[]){
  /* Initialisation des librairies */
  t_aeroport **aeroport;
  t_chemin **trajet;
  t_avion **avion;
  t_avion **dcol_avion;
 
  FILE *faero;
  FILE *fchem;
 
  char chaine_aero[1000];
  char chaine_trajet[1000];
  char *temp;
  int temp2 = 0;
  int nbaero = 0;
  int nbtrajet = 0;
  int i = 0,j = 0,z = 0;
  int avions_totals = 0;
  int avions_siml = 0;
  int seed = 0;
  int avions_capacite[3] = {15000, 10000, 8000};
  int ut = 10; /* 200km en une UT en vitesse normale, 100km en boucle d'attente */
  int to_decol = 0; 
  int if_good_destination = 0; /* 0 = non / 1 = oui */
  int *possible;
  
  int success;

  model_init();
  success = load_map("aeroport.txt","chemin.txt");
  if(!success)
  {
	message_box("aeroport.txt et/ou chemins.txt sont introuvables");
  }

  avions_init();
  
  printf("Starting simulation...\n");
  message_box("on arrete le prog ici, le code de simulation n'utilise pas encore le pointeur global sur la base de donnee core...");
  while( ut != 0 ){
         printf("\nUT: %d\n", ut);
         /* Choix du nombre d'avions �d�oller */
         to_decol = get_random( avions_siml, 3, 3, 0 );
         dcol_avion = (t_avion**)malloc(to_decol*sizeof(t_avion));
         j = 0;
         for(i=0; i<avions_siml; i++){
             if ( avion[i]->station == 1 && j<to_decol ){
                 dcol_avion[j] = avion[i];   
                 j++;
             }      
         } 
            
         temp2 = get_random( RAND_MAX, 0, 0, 0 );
         /* D�erminer destinations */
         for(i=0; i<to_decol; i++){
             for(j=0; j<30; j++){ dcol_avion[i]->escale[j] = -1; }
             
             // Cr�r tableau des choix possibles
             possible = (int*)malloc((nbaero-1)*sizeof(int));
             j = 0;
             for(z=0; z<nbaero; z++){
                   if ( dcol_avion[i]->depart != z ) { possible[j] = z; j++;}
             }
             
             /*Pour voir la liste des destinations possibles
             printf("\n%d,%d,", to_decol, dcol_avion[i]->depart);
             for(z=0; z<j; z++){ printf("%d,", possible[z]); }*/

             dcol_avion[i]->arrivee = possible[get_random( j, 1, 1, temp2 )];
             temp2 += dcol_avion[i]->arrivee+dcol_avion[i]->depart;
             //printf("%d - %d\n", dcol_avion[i]->depart, dcol_avion[i]->arrivee);
                   
             if (dcol_avion[i]->arrivee != dcol_avion[i]->depart){                             
                    /* Appliquer Dijkstra ou Floyd-Warshall pour d�erminer si
                       destination accessible et trajet 
                       
                       Les points �lier sont dcol_avion[i]->depart et 
                       dcol_avion[i]->arrivee qui sont les num�os des 
                       a�oports de d�art et arriv�.
                    */
                       
             }        
         }       
           
         /* Si l'avion atterit, g�er atterrissages */
         
         
         /* Avancer */
         
         
         free(dcol_avion);
         my_delay();
         ut--;
  }
     
  return 0;
}





